package co.baiku.boot.response.item;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.time.LocalDateTime;

public class WeixinRefundRecord {
    /**
     * 商户退款单号
     * <p>
     * 商户系统内部的退款单号，商户系统内部唯一，只能是数字、大小写字母_-|*@ ，同一退款单号多次请求只退一笔。
     * </p>
     */
    private String out_refund_no;
    /**
     * 微信退款单号
     */
    private String refund_id;
    /**
     * 退款渠道
     * <p>
     * ORIGINAL—原路退款</p>
     * <p>
     * BALANCE—退回到余额</p>
     * <p>
     * OTHER_BALANCE—原账户异常退到其他余额账户</p>
     * <p>
     * OTHER_BANKCARD—原银行卡异常退到其他银行卡
     * </p>
     */
    private String refund_channel;
    /**
     * 申请退款金额
     * <p>
     * 退款总金额,单位为分,可以做部分退款
     * </p>
     */
    private Integer refund_fee;
    /**
     * 退款金额
     * <p>
     * 退款金额=申请退款金额-非充值代金券退款金额，退款金额<=申请退款金额
     * </p>
     */
    private Integer settlement_refund_fee;
    /**
     * 退款状态
     * <p>
     * 退款状态：
     * <p>
     * SUCCESS—退款成功
     * <p>
     * REFUNDCLOSE—退款关闭。
     * <p>
     * PROCESSING—退款处理中
     * <p>
     * CHANGE—退款异常，退款到银行发现用户的卡作废或者冻结了，导致原路退款银行卡失败，可前往商户平台（pay.weixin.qq.com）-交易中心，手动处理此笔退款。
     * </p>
     */
    private String refund_status;
    /**
     * 退款资金来源
     * <p>
     * REFUND_SOURCE_RECHARGE_FUNDS---可用余额退款/基本账户
     * <p>
     * REFUND_SOURCE_UNSETTLED_FUNDS---未结算资金退款
     * <p>
     * </p>
     */
    private String refund_account;
    /**
     * 退款入账账户
     * <p>
     * 取当前退款单的退款入账方
     * 1）退回银行卡：
     * <p>
     * {银行名称}{卡类型}{卡尾号}
     * <p>
     * 2）退回支付用户零钱:
     * <p>
     * 支付用户零钱
     * <p>
     * 3）退还商户:
     * <p>
     * 商户基本账户
     * <p>
     * 商户结算银行账户
     * <p>
     * 4）退回支付用户零钱通:
     * <p>
     * 支付用户零钱通
     * </p>
     */
    private String refund_recv_accout;
    /**
     * 退款成功时间
     * <p>
     * 退款成功时间，当退款状态为退款成功时有返回。
     * </p>
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime refund_success_time;

    public String getOut_refund_no() {
        return out_refund_no;
    }

    public void setOut_refund_no(String out_refund_no) {
        this.out_refund_no = out_refund_no;
    }

    public String getRefund_id() {
        return refund_id;
    }

    public void setRefund_id(String refund_id) {
        this.refund_id = refund_id;
    }

    public String getRefund_channel() {
        return refund_channel;
    }

    public void setRefund_channel(String refund_channel) {
        this.refund_channel = refund_channel;
    }

    public Integer getRefund_fee() {
        return refund_fee;
    }

    public void setRefund_fee(Integer refund_fee) {
        this.refund_fee = refund_fee;
    }

    public Integer getSettlement_refund_fee() {
        return settlement_refund_fee;
    }

    public void setSettlement_refund_fee(Integer settlement_refund_fee) {
        this.settlement_refund_fee = settlement_refund_fee;
    }

    public String getRefund_status() {
        return refund_status;
    }

    public void setRefund_status(String refund_status) {
        this.refund_status = refund_status;
    }

    public String getRefund_account() {
        return refund_account;
    }

    public void setRefund_account(String refund_account) {
        this.refund_account = refund_account;
    }

    public String getRefund_recv_accout() {
        return refund_recv_accout;
    }

    public void setRefund_recv_accout(String refund_recv_accout) {
        this.refund_recv_accout = refund_recv_accout;
    }

    public LocalDateTime getRefund_success_time() {
        return refund_success_time;
    }

    public void setRefund_success_time(LocalDateTime refund_success_time) {
        this.refund_success_time = refund_success_time;
    }
}
